/*****************************************************************************/
/*                                                                           */
/*    Domino Operation System Driver Module                                  */
/*                                                                           */
/*    Copyright (C) 2011 Laszlo Arvai                                        */
/*                                                                           */
/*    ------------------------------------------------------------------     */
/*    SPI Driver for PIC24 series                                            */
/*****************************************************************************/

///////////////////////////////////////////////////////////////////////////////
// Includes
#define USE_AND_OR
#include <spi.h>
#include <drvSPI.h>
#include "drvIOConfig.h"

/*****************************************************************************/
/* SPI 1 Functions                                                           */
/*****************************************************************************/

///////////////////////////////////////////////////////////////////////////////
// Initialize SPI driver
#if defined(drvSPI1_CON1)
void drvSPI1Init(void)
{
   SPI1CON1 = drvSPI1_CON1;  // select mode
   SPI1CON2 = 0;
   SPI1STAT = SPI_ENABLE;     // enable the peripheral
}

///////////////////////////////////////////////////////////////////////////////
// Send and receive one byte over SPI interface
dosByte drvSPI1SendAndReceiveByte( dosByte in_byte )
{
	SPI1BUF = in_byte;						// write to buffer for TX
	while( !SPI1STATbits.SPIRBF);	// wait for transfer complete
	return SPI1BUF;								// read the received value
}

#endif

/*****************************************************************************/
/* SPI 2 Functions                                                           */
/*****************************************************************************/

///////////////////////////////////////////////////////////////////////////////
// Initialize SPI driver
#if defined(drvSPI2_CON1)
void drvSPI2Init(void)
{
   SPI2CON1 = drvSPI2_CON1;  // select mode
   SPI2CON2 = 0;
   SPI2STAT = SPI_ENABLE;     // enable the peripheral
}

///////////////////////////////////////////////////////////////////////////////
// Send and receive one byte over SPI interface
dosByte drvSPI2SendAndReceiveByte( dosByte in_byte )
{
	SPI2BUF = in_byte;						// write to buffer for TX
	while( !SPI2STATbits.SPIRBF);	// wait for transfer complete
	return SPI2BUF;								// read the received value
}

#endif
